Ext.ns('Tm.notice');
Tm.notice.NoticeIndexPanel = Ext.extend(Ext.Panel, {
			frame : true,
			autoWidth : true,
			// autoHeight : true,
			layout : 'fit',
			initComponent : function() {
				var form = new Tm.common.FormPanel({
							layout : 'table',
							layoutConfig : {
								columns : 3
							},
							defaults : {
								xtype : 'textfield',
								margins : '0 5 0 0'
							},
							items : [{
										plugins : [Ext.ux.FieldLabeler],
										name : 'title',
										fieldLabel : '标题'
									}, {
										plugins : [Ext.ux.FieldLabeler],
										xtype : 'googlesearchfield',
										fieldLabel : '案件',
										name : 'taskId',
										hiddenName : 'taskId',
										queryURL : 'task/goolgeTask.do'
									}, {
										plugins : [Ext.ux.FieldLabeler],
										xtype : 'compositefield',
										fieldLabel : '提醒日期',
										msgTarget : 'side',
										width : 300,
										items : [{
													id : 'executeTimeStartDate',
													xtype : 'datefield',
													format : 'Y-m-d',
													name : 'executeTimeStartDate',
													vtype : 'daterange',
													endDateField : 'executeTimeEndDate'
												}, {
													xtype : 'displayfield',
													value : '-'
												}, {
													id : 'executeTimeEndDate',
													xtype : 'datefield',
													format : 'Y-m-d',
													name : 'executeTimeEndDate',
													vtype : 'daterange',
													startDateField : 'executeTimeStartDate'
												}]
									}, {
										plugins : [Ext.ux.FieldLabeler],
										name : 'status',
										fieldLabel : '状态',
										editable : false,
										xtype : 'combo',
										typeAhead : true,
										forceSelection : true,
										mode : 'local',
										triggerAction : 'all',
										emptyText : '请选择...',
										selectOnFocus : true,
										store : Tm.data.noticeStates
									}, {
										plugins : [Ext.ux.FieldLabeler],
										name : 'isAboutTask',
										fieldLabel : '关联案件',
										editable : false,
										xtype : 'combo',
										typeAhead : true,
										forceSelection : true,
										mode : 'local',
										triggerAction : 'all',
										emptyText : '请选择...',
										selectOnFocus : true,
										store : Tm.data.isAboutTask
									}]
						});
				var sm = new Ext.grid.CheckboxSelectionModel();
				var cm = new Ext.grid.ColumnModel([sm, {
							header : 'id',
							width : 20,
							dataIndex : 'id',
							hidden : true
						}, {
							header : '标题',
							width : 80,
							dataIndex : 'title',
							sortable : true,
							renderer : function(data, metadata, record, rowIndex, columnIndex, store) {
								metadata.attr = 'ext:qtitle="' + this.header + '"' + ' ext:qtip="' + data + '"';
								return data;
							}
						}, {
							header : '内容',
							width : 160,
							dataIndex : 'content',
							sortable : true,
							renderer : function(data, metadata, record, rowIndex, columnIndex, store) {
								metadata.attr = 'ext:qtitle="' + this.header + '"' + ' ext:qtip="' + data + '"';
								return data;
							}
						}, {
							header : '案件',
							width : 80,
							dataIndex : 'taskName',
							sortable : true,
							renderer : function(data, metadata, record, rowIndex, columnIndex, store) {
								metadata.attr = 'ext:qtitle="' + this.header + '"' + ' ext:qtip="' + data + '"';
								return data;
							}
						}, {
							header : '创建人',
							width : 80,
							dataIndex : 'createName',
							sortable : true
						}, {
							header : '创建时间',
							width : 80,
							dataIndex : 'createTime',
							renderer : Ext.util.Format.customDateRenderer('Y-m-d'),
							sortable : true
						}, {
							header : '提醒日期',
							width : 80,
							dataIndex : 'executeTime',
							renderer : Ext.util.Format.customDateRenderer('Y-m-d'),
							sortable : true
						}, {
							header : '状态',
							width : 40,
							dataIndex : 'status',
							xtype : 'combocolumn',
							sortable : true,
							editor : new Ext.form.ComboBox({
										name : 'status',
										fieldLabel : '状态',
										mode : 'local',
										editable : false,
										typeAhead : true,
										forceSelection : true,
										hiddenName : 'status',
										mode : 'local',
										triggerAction : 'all',
										emptyText : '请选择...',
										selectOnFocus : true,
										store : Tm.data.noticeStates,
										allowBlank : false
									})
						}]);
				cm.defaultSortable = true;
				var fields = [{
							name : 'id',
							type : 'int',
							mapping : 'id'
						}, {
							name : 'taskId',
							type : 'int',
							mapping : 'taskId'
						}, {
							name : 'taskName',
							type : 'string',
							mapping : 'taskName'
						}, {
							name : 'title',
							type : 'string',
							mapping : 'title'
						}, {
							name : 'status',
							type : 'string',
							mapping : 'status'
						}, {
							name : 'createTime',
							type : 'string',
							mapping : 'createTime'
						}, {
							name : 'content',
							type : 'string',
							mapping : 'content'
						}, {
							name : 'createName',
							type : 'string',
							mapping : 'createName'
						}, {
							name : 'executeTime',
							type : 'string',
							mapping : 'executeTime'
						}];
				var ds = new Ext.data.Store({
							id : 'noticeIndexPanelGridPanelStore',
							proxy : new Ext.data.HttpProxy({
										url : 'notice/queryNotice.do'
									}),
							reader : new Ext.data.JsonReader({
										totalProperty : 'totalProperty',
										root : 'root',
										id : 'id',
										fields : fields
									}),
							baseParams : {
								start : 0,
								limit : 20
							},
							sortInfo : {
								field : 'id',
								direction : 'ASC'
							},
							autoLoad : true,
							listeners : {
								beforeload : function() {
									Ext.apply(this.baseParams, form.getForm().getFieldValues(false));
									Ext.apply(this.baseParams, {
												executeTimeStartDate : form.getForm().getValues().executeTimeStartDate,
												executeTimeEndDate : form.getForm().getValues().executeTimeEndDate
											});
								}
							}
						});
				var grid = new Ext.grid.GridPanel({
							store : ds,
							sm : sm,
							cm : cm,
							border : false,
							stripeRows : true,
							autoHeight : true,
							viewConfig : {
								forceFit : true
							},
							bbar : new Ext.PagingToolbar({
										plugins : new Ext.ux.ProgressBarPager(),
										pageSize : 20,
										store : ds,
										displayInfo : true,
										emptyMsg : '没有记录'
									}),
							listeners : {
								celldblclick : function(grid, rowIndex, columnIndex, event) {
									var store = grid.getStore();
									var data = store.getAt(rowIndex).data;
									var noticeUpdatePanel = new Tm.notice.NoticeAddPanel({
												dataId : data.id
											});
									var noticeAddWindow = new Tm.common.CommonWindow({
												id : 'noticeAddWindow',
												title : '更新提醒',
												items : noticeUpdatePanel
											});
									noticeAddWindow.on('close', function(panel) {
												ds.load();
											});
									noticeAddWindow.show();
								}
							}
						});
				var toolBar = new Ext.Toolbar({
							hideBorders : true,
							buttons : [{
										text : '查询',
										iconCls : 'act_queryIcon',
										handler : function() {
											ds.load();
										}
									}, {
										xtype : 'tbseparator'
									}, {
										text : '重置',
										iconCls : 'act_resetIcon',
										handler : function() {
											form.getForm().reset();
										}
									}, {
										xtype : 'tbseparator'
									}, {
										text : '新增',
										iconCls : 'act_addIcon',
										handler : function() {
											var noticeAddPanel = new Tm.notice.NoticeAddPanel();
											var noticeAddWindow = new Tm.common.CommonWindow({
														id : 'noticeAddWindow',
														title : '新增提醒',
														items : noticeAddPanel
													});
											noticeAddWindow.on('close', function(panel) {
														ds.load();
													});
											noticeAddWindow.show();
										}
									}, {
										xtype : 'tbseparator'
									}, {
										iconCls : 'act_deleteIcon',
										tooltip : '删除',
										text : '删除',
										handler : function() {
											//editor.stopEditing();
											var records = grid.getSelectionModel().selections.items;
											var ids = [];
											if (records.length == 0) {
												return;
											} else {
												var breakException = 'break';
												try {
													records.forEach(function(record, index, array) {
																if (record.data.status == 'SENT') {
																	App.setAlert('notice', '只有[待发送]状态的提醒可以被删除!');
																	throw breakException;
																} else {
																	ids.push(record.data.id);
																}
															});
												} catch (e) {
													if (e !== breakException) {
														throw e;
													} else {
														return;
													}
												}
											}
											Ext.MessageBox.confirm('注意', '您确定要进行该操作？', function(btn) {
														if (btn == 'yes') {
															Ext.Ajax.request({
																		url : 'notice/deleteNotices.do',
																		method : 'POST',
																		params : {
																			ids : ids
																		},
																		success : function(action, response) {
																			grid.getStore().load();
																		},
																		failure : function(action, response) {
																			App.setAlert('notice', '删除失败');
																		}
																	});
														}
													});
										},
										scope : this
									}]
						});
				Ext.apply(this, {
							tbar : toolBar,
							items : [form, grid]
						});
				Tm.notice.NoticeIndexPanel.superclass.initComponent.call(this);
			}
		});
